/*
 * TeleStax, Open Source Cloud Communications
 * Copyright 2011-2016, Telestax Inc and individual contributors
 * by the @authors tag.
 *
 * This is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2.1 of
 * the License, or (at your option) any later version.
 *
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this software; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */

package org.restcomm.media.core.rtp.crypto;

/**
 * @author guilherme.jansen@telestax.com
 */
public enum CipherSuite {

    TLS_NULL_WITH_NULL_NULL(0x0000),
    TLS_RSA_WITH_NULL_MD5(0x0001),
    TLS_RSA_WITH_NULL_SHA(0x0002),
    TLS_RSA_EXPORT_WITH_RC4_40_MD5(0x0003),
    TLS_RSA_WITH_RC4_128_MD5(0x0004),
    TLS_RSA_WITH_RC4_128_SHA(0x0005),
    TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5(0x0006),
    TLS_RSA_WITH_IDEA_CBC_SHA(0x0007),
    TLS_RSA_EXPORT_WITH_DES40_CBC_SHA(0x0008),
    TLS_RSA_WITH_DES_CBC_SHA(0x0009),
    TLS_RSA_WITH_3DES_EDE_CBC_SHA(0x000A),
    TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA(0x000B),
    TLS_DH_DSS_WITH_DES_CBC_SHA(0x000C),
    TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA(0x000D),
    TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA(0x000E),
    TLS_DH_RSA_WITH_DES_CBC_SHA(0x000F),
    TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA(0x0010),
    TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA(0x0011),
    TLS_DHE_DSS_WITH_DES_CBC_SHA(0x0012),
    TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA(0x0013),
    TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA(0x0014),
    TLS_DHE_RSA_WITH_DES_CBC_SHA(0x0015),
    TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA(0x0016),
    TLS_DH_anon_EXPORT_WITH_RC4_40_MD5(0x0017),
    TLS_DH_anon_WITH_RC4_128_MD5(0x0018),
    TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA(0x0019),
    TLS_DH_anon_WITH_DES_CBC_SHA(0x001A),
    TLS_DH_anon_WITH_3DES_EDE_CBC_SHA(0x001B),
    TLS_RSA_WITH_AES_128_CBC_SHA(0x002F),
    TLS_DH_DSS_WITH_AES_128_CBC_SHA(0x0030),
    TLS_DH_RSA_WITH_AES_128_CBC_SHA(0x0031),
    TLS_DHE_DSS_WITH_AES_128_CBC_SHA(0x0032),
    TLS_DHE_RSA_WITH_AES_128_CBC_SHA(0x0033),
    TLS_DH_anon_WITH_AES_128_CBC_SHA(0x0034),
    TLS_RSA_WITH_AES_256_CBC_SHA(0x0035),
    TLS_DH_DSS_WITH_AES_256_CBC_SHA(0x0036),
    TLS_DH_RSA_WITH_AES_256_CBC_SHA(0x0037),
    TLS_DHE_DSS_WITH_AES_256_CBC_SHA(0x0038),
    TLS_DHE_RSA_WITH_AES_256_CBC_SHA(0x0039),
    TLS_DH_anon_WITH_AES_256_CBC_SHA(0x003A),
    TLS_RSA_WITH_CAMELLIA_128_CBC_SHA(0x0041),
    TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA(0x0042),
    TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA(0x0043),
    TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA(0x0044),
    TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA(0x0045),
    TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA(0x0046),
    TLS_RSA_WITH_CAMELLIA_256_CBC_SHA(0x0084),
    TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA(0x0085),
    TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA(0x0086),
    TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA(0x0087),
    TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA(0x0088),
    TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA(0x0089),
    TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256(0x00BA),
    TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256(0x00BB),
    TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256(0x00BC),
    TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256(0x00BD),
    TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256(0x00BE),
    TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256(0x00BF),
    TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256(0x00C0),
    TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256(0x00C1),
    TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256(0x00C2),
    TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256(0x00C3),
    TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256(0x00C4),
    TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256(0x00C5),
    TLS_RSA_WITH_SEED_CBC_SHA(0x0096),
    TLS_DH_DSS_WITH_SEED_CBC_SHA(0x0097),
    TLS_DH_RSA_WITH_SEED_CBC_SHA(0x0098),
    TLS_DHE_DSS_WITH_SEED_CBC_SHA(0x0099),
    TLS_DHE_RSA_WITH_SEED_CBC_SHA(0x009A),
    TLS_DH_anon_WITH_SEED_CBC_SHA(0x009B),
    TLS_PSK_WITH_RC4_128_SHA(0x008A),
    TLS_PSK_WITH_3DES_EDE_CBC_SHA(0x008B),
    TLS_PSK_WITH_AES_128_CBC_SHA(0x008C),
    TLS_PSK_WITH_AES_256_CBC_SHA(0x008D),
    TLS_DHE_PSK_WITH_RC4_128_SHA(0x008E),
    TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA(0x008F),
    TLS_DHE_PSK_WITH_AES_128_CBC_SHA(0x0090),
    TLS_DHE_PSK_WITH_AES_256_CBC_SHA(0x0091),
    TLS_RSA_PSK_WITH_RC4_128_SHA(0x0092),
    TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA(0x0093),
    TLS_RSA_PSK_WITH_AES_128_CBC_SHA(0x0094),
    TLS_RSA_PSK_WITH_AES_256_CBC_SHA(0x0095),
    TLS_ECDH_ECDSA_WITH_NULL_SHA(0xC001),
    TLS_ECDH_ECDSA_WITH_RC4_128_SHA(0xC002),
    TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA(0xC003),
    TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA(0xC004),
    TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA(0xC005),
    TLS_ECDHE_ECDSA_WITH_NULL_SHA(0xC006),
    TLS_ECDHE_ECDSA_WITH_RC4_128_SHA(0xC007),
    TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA(0xC008),
    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA(0xC009),
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA(0xC00A),
    TLS_ECDH_RSA_WITH_NULL_SHA(0xC00B),
    TLS_ECDH_RSA_WITH_RC4_128_SHA(0xC00C),
    TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA(0xC00D),
    TLS_ECDH_RSA_WITH_AES_128_CBC_SHA(0xC00E),
    TLS_ECDH_RSA_WITH_AES_256_CBC_SHA(0xC00F),
    TLS_ECDHE_RSA_WITH_NULL_SHA(0xC010),
    TLS_ECDHE_RSA_WITH_RC4_128_SHA(0xC011),
    TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA(0xC012),
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA(0xC013),
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA(0xC014),
    TLS_ECDH_anon_WITH_NULL_SHA(0xC015),
    TLS_ECDH_anon_WITH_RC4_128_SHA(0xC016),
    TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA(0xC017),
    TLS_ECDH_anon_WITH_AES_128_CBC_SHA(0xC018),
    TLS_ECDH_anon_WITH_AES_256_CBC_SHA(0xC019),
    TLS_PSK_WITH_NULL_SHA(0x002C),
    TLS_DHE_PSK_WITH_NULL_SHA(0x002D),
    TLS_RSA_PSK_WITH_NULL_SHA(0x002E),
    TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA(0xC01A),
    TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA(0xC01B),
    TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA(0xC01C),
    TLS_SRP_SHA_WITH_AES_128_CBC_SHA(0xC01D),
    TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA(0xC01E),
    TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA(0xC01F),
    TLS_SRP_SHA_WITH_AES_256_CBC_SHA(0xC020),
    TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA(0xC021),
    TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA(0xC022),
    TLS_RSA_WITH_NULL_SHA256(0x003B),
    TLS_RSA_WITH_AES_128_CBC_SHA256(0x003C),
    TLS_RSA_WITH_AES_256_CBC_SHA256(0x003D),
    TLS_DH_DSS_WITH_AES_128_CBC_SHA256(0x003E),
    TLS_DH_RSA_WITH_AES_128_CBC_SHA256(0x003F),
    TLS_DHE_DSS_WITH_AES_128_CBC_SHA256(0x0040),
    TLS_DHE_RSA_WITH_AES_128_CBC_SHA256(0x0067),
    TLS_DH_DSS_WITH_AES_256_CBC_SHA256(0x0068),
    TLS_DH_RSA_WITH_AES_256_CBC_SHA256(0x0069),
    TLS_DHE_DSS_WITH_AES_256_CBC_SHA256(0x006A),
    TLS_DHE_RSA_WITH_AES_256_CBC_SHA256(0x006B),
    TLS_DH_anon_WITH_AES_128_CBC_SHA256(0x006C),
    TLS_DH_anon_WITH_AES_256_CBC_SHA256(0x006D),
    TLS_RSA_WITH_AES_128_GCM_SHA256(0x009C),
    TLS_RSA_WITH_AES_256_GCM_SHA384(0x009D),
    TLS_DHE_RSA_WITH_AES_128_GCM_SHA256(0x009E),
    TLS_DHE_RSA_WITH_AES_256_GCM_SHA384(0x009F),
    TLS_DH_RSA_WITH_AES_128_GCM_SHA256(0x00A0),
    TLS_DH_RSA_WITH_AES_256_GCM_SHA384(0x00A1),
    TLS_DHE_DSS_WITH_AES_128_GCM_SHA256(0x00A2),
    TLS_DHE_DSS_WITH_AES_256_GCM_SHA384(0x00A3),
    TLS_DH_DSS_WITH_AES_128_GCM_SHA256(0x00A4),
    TLS_DH_DSS_WITH_AES_256_GCM_SHA384(0x00A5),
    TLS_DH_anon_WITH_AES_128_GCM_SHA256(0x00A6),
    TLS_DH_anon_WITH_AES_256_GCM_SHA384(0x00A7),
    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256(0xC023),
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384(0xC024),
    TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256(0xC025),
    TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384(0xC026),
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256(0xC027),
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384(0xC028),
    TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256(0xC029),
    TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384(0xC02A),
    TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256(0xC02B),
    TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384(0xC02C),
    TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256(0xC02D),
    TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384(0xC02E),
    TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256(0xC02F),
    TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384(0xC030),
    TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256(0xC031),
    TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384(0xC032),
    TLS_PSK_WITH_AES_128_GCM_SHA256(0x00A8),
    TLS_PSK_WITH_AES_256_GCM_SHA384(0x00A9),
    TLS_DHE_PSK_WITH_AES_128_GCM_SHA256(0x00AA),
    TLS_DHE_PSK_WITH_AES_256_GCM_SHA384(0x00AB),
    TLS_RSA_PSK_WITH_AES_128_GCM_SHA256(0x00AC),
    TLS_RSA_PSK_WITH_AES_256_GCM_SHA384(0x00AD),
    TLS_PSK_WITH_AES_128_CBC_SHA256(0x00AE),
    TLS_PSK_WITH_AES_256_CBC_SHA384(0x00AF),
    TLS_PSK_WITH_NULL_SHA256(0x00B0),
    TLS_PSK_WITH_NULL_SHA384(0x00B1),
    TLS_DHE_PSK_WITH_AES_128_CBC_SHA256(0x00B2),
    TLS_DHE_PSK_WITH_AES_256_CBC_SHA384(0x00B3),
    TLS_DHE_PSK_WITH_NULL_SHA256(0x00B4),
    TLS_DHE_PSK_WITH_NULL_SHA384(0x00B5),
    TLS_RSA_PSK_WITH_AES_128_CBC_SHA256(0x00B6),
    TLS_RSA_PSK_WITH_AES_256_CBC_SHA384(0x00B7),
    TLS_RSA_PSK_WITH_NULL_SHA256(0x00B8),
    TLS_RSA_PSK_WITH_NULL_SHA384(0x00B9),
    TLS_ECDHE_PSK_WITH_RC4_128_SHA(0xC033),
    TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA(0xC034),
    TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA(0xC035),
    TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA(0xC036),
    TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256(0xC037),
    TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384(0xC038),
    TLS_ECDHE_PSK_WITH_NULL_SHA(0xC039),
    TLS_ECDHE_PSK_WITH_NULL_SHA256(0xC03A),
    TLS_ECDHE_PSK_WITH_NULL_SHA384(0xC03B),
    TLS_EMPTY_RENEGOTIATION_INFO_SCSV(0x00FF),
    TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256(0xC072),
    TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384(0xC073),
    TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256(0xC074),
    TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384(0xC075),
    TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256(0xC076),
    TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384(0xC077),
    TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256(0xC078),
    TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384(0xC079),
    TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256(0xC07A),
    TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384(0xC07B),
    TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256(0xC07C),
    TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384(0xC07D),
    TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256(0xC07E),
    TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384(0xC07F),
    TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256(0xC080),
    TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384(0xC081),
    TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256(0xC082),
    TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384(0xC083),
    TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256(0xC084),
    TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384(0xC085),
    TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256(0xC086),
    TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384(0xC087),
    TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256(0xC088),
    TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384(0xC089),
    TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256(0xC08A),
    TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384(0xC08B),
    TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256(0xC08C),
    TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384(0xC08D),
    TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256(0xC08E),
    TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384(0xC08F),
    TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256(0xC090),
    TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384(0xC091),
    TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256(0xC092),
    TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384(0xC093),
    TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256(0xC094),
    TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384(0xC095),
    TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256(0xC096),
    TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384(0xC097),
    TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256(0xC098),
    TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384(0xC099),
    TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256(0xC09A),
    TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384(0xC09B),
    TLS_RSA_WITH_AES_128_CCM(0xC09C),
    TLS_RSA_WITH_AES_256_CCM(0xC09D),
    TLS_DHE_RSA_WITH_AES_128_CCM(0xC09E),
    TLS_DHE_RSA_WITH_AES_256_CCM(0xC09F),
    TLS_RSA_WITH_AES_128_CCM_8(0xC0A0),
    TLS_RSA_WITH_AES_256_CCM_8(0xC0A1),
    TLS_DHE_RSA_WITH_AES_128_CCM_8(0xC0A2),
    TLS_DHE_RSA_WITH_AES_256_CCM_8(0xC0A3),
    TLS_PSK_WITH_AES_128_CCM(0xC0A4),
    TLS_PSK_WITH_AES_256_CCM(0xC0A5),
    TLS_DHE_PSK_WITH_AES_128_CCM(0xC0A6),
    TLS_DHE_PSK_WITH_AES_256_CCM(0xC0A7),
    TLS_PSK_WITH_AES_128_CCM_8(0xC0A8),
    TLS_PSK_WITH_AES_256_CCM_8(0xC0A9),
    TLS_PSK_DHE_WITH_AES_128_CCM_8(0xC0AA),
    TLS_PSK_DHE_WITH_AES_256_CCM_8(0xC0AB),
    TLS_ECDHE_ECDSA_WITH_AES_128_CCM(0xC0AC),
    TLS_ECDHE_ECDSA_WITH_AES_256_CCM(0xC0AD),
    TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8(0xC0AE),
    TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8(0xC0AF),
    TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256(0xCC13),
    TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256(0xCC14),
    TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256(0xCC15),
    TLS_RSA_WITH_ESTREAM_SALSA20_SHA1(0xE410),
    TLS_RSA_WITH_SALSA20_SHA1(0xE411),
    TLS_ECDHE_RSA_WITH_ESTREAM_SALSA20_SHA1(0xE412),
    TLS_ECDHE_RSA_WITH_SALSA20_SHA1(0xE413),
    TLS_ECDHE_ECDSA_WITH_ESTREAM_SALSA20_SHA1(0xE414),
    TLS_ECDHE_ECDSA_WITH_SALSA20_SHA1(0xE415),
    TLS_PSK_WITH_ESTREAM_SALSA20_SHA1(0xE416),
    TLS_PSK_WITH_SALSA20_SHA1(0xE417),
    TLS_ECDHE_PSK_WITH_ESTREAM_SALSA20_SHA1(0xE418),
    TLS_ECDHE_PSK_WITH_SALSA20_SHA1(0xE419),
    TLS_RSA_PSK_WITH_ESTREAM_SALSA20_SHA1(0xE41A),
    TLS_RSA_PSK_WITH_SALSA20_SHA1(0xE41B),
    TLS_DHE_PSK_WITH_ESTREAM_SALSA20_SHA1(0xE41C),
    TLS_DHE_PSK_WITH_SALSA20_SHA1(0xE41D),
    TLS_DHE_RSA_WITH_ESTREAM_SALSA20_SHA1(0xE41E),
    TLS_DHE_RSA_WITH_SALSA20_SHA1(0xE41F),
    TLS_FALLBACK_SCSV(0x5600);

    private final int value;

    CipherSuite(int value){
        this.value = value;
    }

    public int getValue() {
        return value;
    }

    /**
     * Search for the enumerator that correspondent to the informed value inside {@link CipherSuite} enumeration
     *
     * @param value the value of the enumerator
     * @return a {@link CipherSuite} enumerator with the informed value, null if there is no enumerator with the informed value
     */
    public static CipherSuite getEnum(int value) {
        for (CipherSuite cs : CipherSuite.values()) {
            if (cs.getValue() == value) {
                return cs;
            }
        }
        return null;
    }

}
